<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>对象的属性</title>
		<script>
			/* 
			属性名：
				-通常属性名就是一个字符串，所以属性名可以是任何值，没有什么特殊要求；
				但是如果你的属性名太特殊了，不能直接使用，需要使用[]来设置；
				虽然如此，但是我们还是强烈建议属性名也按照标识符的规范命名；
				
				- 也可以使用符号(symbol)作为属性名，来添加属性；
				  获取这种属性时，也必须使用symbol；
				  使用symbol添加的属性，通常是那些不希望被外界访问的属性。
				  
				-使用[]去操作属性时，可以使用变量；
				
			属性值：
				对象的属性值可以是任意的数据类型，也可以是一个对象；
					let obj = Object();
					obj.f=Object();
			
			in 运算符
				- 用来检查对象中是否含有某个属性
				- 语法 属性名 in obj
				- 如果有返回true,否则返回false；
			 */
			let obj = Object();
			obj.name = "孙悟空";
			//obj.if = "hhh"; //不建议
			//obj.let = "哈哈哈";//不建议
			//obj["1223232@q#$"] = "呵呵呵";//不建议

			//使用symbol属性
			let mySymbol = Symbol();
			obj[mySymbol] = "通过Symbol添加属性"; //{name: '孙悟空', Symbol(): '通过Symbol添加属性'}
			console.log(obj[mySymbol]); //取出属性‘’
			console.log(obj)

			obj.age = 18;
			obj["gender"] = "男";
			let str = "address";
			obj[str] = "花果山";//等价于obj["address"]
			console.log(obj);
		</script>
	</head>
	<body>
	</body>
</html>